<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    var list = [1, 2, 3, 3, 2, 4, 1, 4, 3, 2, 1, 3, 2];

    // 对象的键名字符串类型  => 唯一的
    var obj = {};

    // 原理: 遍历数组 把数组中的元素作为对象的键名
    for (var i = 0; i < list.length; i++) {
        var item = list[i]; // 数组中的元素
        if (obj[item]) { // 把数组的元素作为对象的键名 => 判断键名是否在对象中已存在
            obj[item]++;
        } else {
            obj[item] = 1; // obj[1] = 1   obj[2] = 1
        }
    }

    console.log(obj);

    // 去重
    // var unique = [];
    // for (var key in obj) {
    //     console.log(key);
    //     unique.push(key * 1);
    // }
    // console.log(unique);


    var sortArr = [];
    for (var key in obj) {
        console.log(key);   // 1 2 3 4   键名 => 元素
        var val = obj[key]; // 3 4 4 2   键值 => 元素的个数
        var arr = new Array(val).fill(key * 1);
        // sortArr.push(arr);
        sortArr = sortArr.concat(arr);
    }
    console.log(sortArr);





</script>

</html>